package servlets.util;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import exceptions.ParameterNotFoundException;

public class ParamUtil {
	/**
	 * Método que extrai da {@link HttpServletRequest} os parâmetros de nome especificados em {@code names}
	 * @param request
	 * @param names
	 * @return
	 * 		{@link Map} associando os nomes em {@code names} ao valor encontrado na {@code request}
	 * @throws ParameterNotFoundException
	 * 		caso algum dos parâmetros não sejam encontrados na request
	 */
	public static Map<String, String> getValues(HttpServletRequest request,
			List<String> names) throws ParameterNotFoundException {
		Map<String, String> params = new HashMap<String, String>();
		for (Iterator<String> iter = names.iterator(); iter.hasNext();) {
			String iterNext = iter.next();
			params.put(iterNext, verifica(request, iterNext));
		}
		return params;
	}

	
	public static String verifica(HttpServletRequest request, String paramName)
			throws ParameterNotFoundException {
		String param = request.getParameter(paramName);
		if (param == null) {
			throw new ParameterNotFoundException(paramName);
		}
		return param;
	}
}
